[新機能] Amazon Pollyがスピーチマークと囁き声エフェクトに対応しました
はじめに
今日はAWS Summit 2017 San Franciscoが開催されていましたので、新機能がたくさん発表されました。この記事で取り上げる新機能はこちら!
スピーチマークに対応
これまでのAmazon Pollyでは、コンテンツを音声ファイルとしてダウンロードすることができました。今回の新機能で、Speech Marksというメタデータで記述されたテキストファイルをダウンロードすることができるようになりました。このメタデータを動画と組み合わせることで、いわゆるリップシンク(口パク)が簡単に作ることが出来ます。
囁き声エフェクトに対応
Amazon PollyではSpeech Synthesis Markup Language (SSML)で発声に豊かな表現を与えることが出来ます。今回は更にPolly独自のエフェクトとしてWhispering(囁き声)が追加されました。この新機能により、更に感情豊かな音声を作成することが出来ます。
やってみた
スピーチマーク
Amazon Pollyの管理コンソールで、以下のようなテキストを入力します。[Change file format]をクリックします。
[Change file format]画面が表示されます。[File format]でSpeech Marksを選択します。また[Speech Marks Types]という項目があります。Sentence(文)、Word(単語)、Viseme(音に対応する顔と位置)、SSMLの4つの種類があります。今回は全部選択しました。最後に[Change]ボタンをクリックします。
[Download Speech Marks]ボタンをクリックします。
ダウンロードされたファイルの内容がこちらです。
{"time":0,"type":"sentence","start":33,"end":96,"value":"Amazon Polly<\/sub>がスピーチマークに対応しました"} {"time":6,"type":"word","start":33,"end":45,"value":"Amazon Polly"} {"time":6,"type":"viseme","value":"p"} {"time":88,"type":"viseme","value":"o"} {"time":141,"type":"viseme","value":"r"} {"time":203,"type":"viseme","value":"i"} {"time":280,"type":"viseme","value":"t"} {"time":335,"type":"viseme","value":"a"} {"time":402,"type":"viseme","value":"k"} {"time":494,"type":"word","start":51,"end":54,"value":"が"} {"time":494,"type":"viseme","value":"k"} {"time":559,"type":"viseme","value":"a"} {"time":649,"type":"word","start":54,"end":66,"value":"スピーチ"} {"time":649,"type":"viseme","value":"s"} {"time":745,"type":"viseme","value":"i"} {"time":806,"type":"viseme","value":"p"} {"time":873,"type":"viseme","value":"i"} {"time":1037,"type":"viseme","value":"J"} {"time":1148,"type":"viseme","value":"i"} {"time":1206,"type":"word","start":66,"end":75,"value":"マーク"} {"time":1206,"type":"viseme","value":"p"} {"time":1294,"type":"viseme","value":"a"} {"time":1482,"type":"viseme","value":"k"} {"time":1568,"type":"viseme","value":"i"} {"time":1627,"type":"word","start":75,"end":78,"value":"に"} {"time":1627,"type":"viseme","value":"J"} {"time":1697,"type":"viseme","value":"i"} {"time":1767,"type":"word","start":78,"end":84,"value":"対応"} {"time":1767,"type":"viseme","value":"t"} {"time":1835,"type":"viseme","value":"a"} {"time":1926,"type":"viseme","value":"i"} {"time":1999,"type":"viseme","value":"o"} {"time":2149,"type":"word","start":84,"end":87,"value":"し"} {"time":2149,"type":"viseme","value":"J"} {"time":2220,"type":"viseme","value":"i"} {"time":2273,"type":"word","start":87,"end":93,"value":"まし"} {"time":2273,"type":"viseme","value":"p"} {"time":2332,"type":"viseme","value":"a"} {"time":2382,"type":"viseme","value":"J"} {"time":2474,"type":"viseme","value":"i"} {"time":2521,"type":"word","start":93,"end":96,"value":"た"} {"time":2521,"type":"viseme","value":"t"} {"time":2580,"type":"viseme","value":"a"} {"time":2757,"type":"viseme","value":"sil"}
このメタデータには以下の内容が記載されています。
- Time ... オーディオストリームの先頭からの時間(ミリ秒単位)</ li>
- Type ... 発言の種類</ li>
- Start ... 入力テキストの先頭からのバイト位置</ li>
- End ... 入力テキストの最後からのバイト位置</ li>
- Value ... スピーチマークに応じて変化するデータ</ li>
Timeを見ることで、動画ファイルと同期がしやすくなります。また面白いのがVisemeで、例えば「スピーチ」を見てみると...
{"time":649,"type":"word","start":54,"end":66,"value":"スピーチ"} {"time":649,"type":"viseme","value":"s"} {"time":745,"type":"viseme","value":"i"} {"time":806,"type":"viseme","value":"p"} {"time":873,"type":"viseme","value":"i"} {"time":1037,"type":"viseme","value":"J"} {"time":1148,"type":"viseme","value":"i"}
と、口の動きとしては「しぴじ」だとPollyは判断しています。このように、実際の単語に拘ることなく、自然な形で見えるように口の動きを決めているようです。
囁き声エフェクト
囁き声エフェクトは<amazon:effect name = "whispered">というSSML要素で定義します。
<speak> <amazon:effect name="whispered">ささやき</amazon:effect><break strength="strong" /> <prosody volume="x-soft" rate="x-slow">いのり</prosody><break strength="strong" /> <prosody volume="medium" rate="slow">えいしょう</prosody><break strength="strong" /> <prosody volume="x-loud" rate="fast">ねんじろ!</prosody> </speak>
するとこんな感じになります。
ぶっちゃけて言うとみずきさんに「す・き」って言わせてニヤニヤしました、すみません。
さいごに
スピーチマークを使うことで、ある程度自然な形でキャラクターに喋らせることができそうです。ぜひやってみたいと思います。